#ifndef __CPPTUTORCOPYCONSTRUCTOR_H__
#define __CPPTUTORCOPYCONSTRUCTOR_H__

#include "cppTutorGlobals.h"

/*
 * There are 3 situations in which the copy constructor is called:
 * - When we make copy of an object.
 * - When we pass an object as an argument by value to a method.
 * - When we return an object from a method by value.
 */
 class CcppTutorCopyConstructor
 {
    private:
        int m_nValue;
        static int m_nsObjectCount;
        char *m_cpValue;
    public:
        CcppTutorCopyConstructor ();
        CcppTutorCopyConstructor (int );
        CcppTutorCopyConstructor (char *);

#ifdef USER_COPY_CONSTRUCTOR
        CcppTutorCopyConstructor (const CcppTutorCopyConstructor& obj);
#endif
       ~CcppTutorCopyConstructor ();
        
        void m_UseObjectAsArgument (CcppTutorCopyConstructor);
        //CcppTutorCopyConstructor m_ReturnObject ();

        void m_ObjectCount ();
        void m_DisplayValue ();
 };

#endif //__CPPTUTORCOPYCONSTRUCTOR_H__

